package com.coderman.infosys.auth.domain.bo.role;

import lombok.Data;

/**
 * Description:用户角色关联关系
 * 由于用户在权限系统里是属于支撑领域，所以用户不会主动绑定角色，那么只有角色主动去关联让，这里我们让用户来维护角色-用户关联关系
 * date: 2022/1/13
 *
 * @author shenshuai
 * @version 1.0.0
 * @since JDK 1.8
 */
@Data
public class RoleUserBO {
    /**
     * 角色编码
     */
    private String roleCode;

    /**
     * 用户ID
     */
    private Long userId;

    public RoleUserBO(){}

    public RoleUserBO(String roleCode, Long userId){
        this.roleCode = roleCode;
        this.userId = userId;
    }

    /**
     * 这种关联关系的场景下，是不是可以认为RoleUserBO对象的实体标示是由roleCode和userId组成的？
     * 当然这里可以认为是只有一个roleCode作为实体标示,userId作为值对象
     *
     * @param roleCode
     * @param userId
     * @return
     */
    public static RoleUserBO ofIdentifer(String roleCode, Long userId){
        return new RoleUserBO(roleCode, userId);
    }

    /**
     * @param userId
     * @return
     */
    public static RoleUserBO ofInstance( Long userId){
        return new RoleUserBO(null, userId);
    }

}
